#ifndef _MAIN_H_
#define _MAIN_H_

// I'm a rebel, I didn't use <gl/glut.h>
#include "glut.h"

typedef enum {
	texStair = 0,
	texFloor,
	texOne,
	texTwo,
	texThree,
	texFour,
	texFive,
	texSix,

	texCount
} eTextures;

extern GLuint g_texture_id[texCount];

// This is the year 2001. I shouldn't have to do this.
#ifndef NULL
#define NULL	 0
#endif

// Do this so there is no memory space in between vertices
#pragma pack(push, 1)

typedef struct {
	float x,y,z;	// position	
} _VERTEX;

typedef struct {
	float x,y;		// texture coordinate
					// (no physics here)
} _TEXCOORD;

typedef struct {
	float x,y,z;	// direction
} _VECTOR;

typedef struct {
	float a,b,c,d;	// direction and offset
} _NORMAL;

typedef struct {
	_NORMAL vStaticNorm;
	_NORMAL vNorm;
	unsigned short* pIndices; // array of indices
	int nIndices;
} _FACE;

typedef struct { // 3x3 matrix
	float f[3*3];
} _MATRIX;

#pragma pack(pop, 1)

void InitSystems();
void FreeSystems();

void AnimateSystems();
void DrawSystems();

#endif // #ifndef _MAIN_H_